package com.oro.domain;

import java.util.Date;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Proposal {

	private boolean canOverrideTotalCost;
	private boolean canOverrideWeeklyCost;
	private boolean canPercentageTotalCost;
	private boolean canPercentageWeeklyCost;
	private boolean canSubtractTotalCost;
	private boolean canSubtractWeeklyCost;
	private Date date;
	@Embedded
	private Discount discount;
	private float discountedCost;
	@Id
	@GeneratedValue
	private Long id;

	private float totalCost;

	public Proposal() {
		super();
		discount = new Discount();
	}

	public boolean getCanOverrideTotalCost() {
		return canOverrideTotalCost;
	}

	public boolean getCanOverrideWeeklyCost() {
		return canOverrideWeeklyCost;
	}

	public boolean getCanPercentageTotalCost() {
		return canPercentageTotalCost;
	}

	public boolean getCanPercentageWeeklyCost() {
		return canPercentageWeeklyCost;
	}

	public boolean getCanSubtractTotalCost() {
		return canSubtractTotalCost;
	}

	public boolean getCanSubtractWeeklyCost() {
		return canSubtractWeeklyCost;
	}

	public Date getDate() {
		return date;
	}

	public Discount getDiscount() {
		return discount;
	}

	public float getDiscountedCost() {
		return discountedCost;
	}

	public Long getId() {
		return id;
	}

	public float getTotalCost() {
		return totalCost;
	}

	public void setCanOverrideTotalCost(boolean canOverrideTotalCost) {
		this.canOverrideTotalCost = canOverrideTotalCost;
	}

	public void setCanOverrideWeeklyCost(boolean canOverrideWeeklyCost) {
		this.canOverrideWeeklyCost = canOverrideWeeklyCost;
	}

	public void setCanPercentageTotalCost(boolean canPercentageTotalCost) {
		this.canPercentageTotalCost = canPercentageTotalCost;
	}

	public void setCanPercentageWeeklyCost(boolean canPercentageWeeklyCost) {
		this.canPercentageWeeklyCost = canPercentageWeeklyCost;
	}

	public void setCanSubtractTotalCost(boolean canSubtractTotalCost) {
		this.canSubtractTotalCost = canSubtractTotalCost;
	}

	public void setCanSubtractWeeklyCost(boolean canSubtractWeeklyCost) {
		this.canSubtractWeeklyCost = canSubtractWeeklyCost;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	public void setDiscount(Discount discount) {
		this.discount = discount;
	}

	public void setDiscountedCost(float discountedCost) {
		this.discountedCost = discountedCost;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setTotalCost(float totalCost) {
		this.totalCost = totalCost;
	}
}
